

#ifndef __IPATCHMESH_H__
#define __IPATCHMESH_H__

#include <export.h>
#include <gfx/imesh.h>

/**
 * \addtogroup graphics
 * @{
 */

/**
 * @brief Interface for a  patch based mesh
 */
struct CE_API iPatchMesh : public iMesh
{
  virtual bool Initialize (iDevice*					device,
													 iVertexBuffer			*vertices, 
													 unsigned						numVertexP, 
													 unsigned						numVertexQ,
													 iVertexDeclaration *vertexDeclaration,
													 unsigned						numPatchesP, 
													 unsigned						numPatchesQ, 
													 float							distance,
													 bool								wrapP = false, 
													 bool								wrapQ = false) = 0;

	virtual bool CalcSmoothNormals () = 0;

  virtual void Copy (iDevice* device, iPatchMesh* mesh) = 0;
  virtual iPatchMesh* Clone (iDevice* device)  = 0;

};

/** @} */

#endif /* ! __IPATCHMESH_H__ */

